//
//  Problem1108.swift
//  TestProject
//
//  Created by 武侠 on 2021/3/15.
//  Copyright © 2021 zhulong. All rights reserved.
//

import UIKit

/*
 1108. IP 地址无效化 【字符替换】
 给你一个有效的 IPv4 地址 address，返回这个 IP 地址的无效化版本。
 所谓无效化 IP 地址，其实就是用 "[.]" 代替了每个 "."。

 示例 1：
     输入：address = "1.1.1.1"
     输出："1[.]1[.]1[.]1"
 示例 2：
     输入：address = "255.100.50.0"
     输出："255[.]100[.]50[.]0"
 */
@objcMembers class Problem1108: NSObject {
    func solution() {
        print(defangIPaddrCharts("1.1.1.1"))
        print(defangIPaddrCharts("255.100.50.0"))
    }
    
    // 使用系统的替换方法：
    func defangIPaddr(_ address: String) -> String {
        return address.replacingOccurrences(of: ".", with: "[.]")
    }
    // 使用map
    func defangIPaddrMap(_ address: String) -> String {
        return address.map { (c) -> String in
            return c == "." ? "[.]" : String(c)
        }.joined()
    }
    // 使用charts
    func defangIPaddrCharts(_ address: String) -> String {
        var chars:[Character] = []
        for c in address {
            if c == "." {
                chars.append("[")
                chars.append(".")
                chars.append("]")
            } else {
                chars.append(c)
            }
        }
        
        return String(chars)
    }
}
